<?php

abstract class Jira_SoapClientGenerated extends Jira_SoapClientAbstract
{

    public $_namespace = false;

    public $_arrayOfObjects = array(
        'ArrayOf_tns1_RemoteUser' => 'Jira_User',
        'ArrayOf_tns1_RemoteComponent' => 'Jira_Component',
        'ArrayOf_tns1_RemoteVersion' => 'Jira_Version',
        'ArrayOf_tns1_RemoteCustomFieldValue' => 'Jira_CustomFieldValue',
        'ArrayOf_tns1_RemoteNamedObject' => 'Jira_NamedObject',
        'ArrayOf_tns1_RemoteIssueType' => 'Jira_IssueType',
        'ArrayOf_tns1_RemoteEntity' => 'Jira_Entity',
        'ArrayOf_tns1_RemotePermissionMapping' => 'Jira_PermissionMapping',
        'ArrayOf_tns1_RemotePriority' => 'Jira_Priority',
        'ArrayOf_tns1_RemoteResolution' => 'Jira_Resolution',
        'ArrayOf_tns1_RemoteStatus' => 'Jira_Status',
        'ArrayOf_tns1_RemoteProjectRole' => 'Jira_ProjectRole',
        'ArrayOf_tns1_RemoteRoleActor' => 'Jira_RoleActor',
        'ArrayOf_tns1_RemoteScheme' => 'Jira_Scheme',
        'ArrayOf_tns1_RemoteField' => 'Jira_Field',
        'ArrayOf_tns1_RemoteComment' => 'Jira_Comment',
        'ArrayOf_tns1_RemoteFilter' => 'Jira_Filter',
        'ArrayOf_tns1_RemoteFieldValue' => 'Jira_FieldValue',
        'ArrayOf_tns1_RemoteSecurityLevel' => 'Jira_SecurityLevel',
        'ArrayOf_tns1_RemoteAvatar' => 'Jira_Avatar',
        'ArrayOf_tns1_RemotePermissionScheme' => 'Jira_PermissionScheme',
        'ArrayOf_tns1_RemotePermission' => 'Jira_Permission',
        'ArrayOf_tns1_RemoteAttachment' => 'Jira_Attachment',
        'ArrayOf_tns1_RemoteWorklog' => 'Jira_Worklog',
        'ArrayOf_tns1_RemoteIssue' => 'Jira_Issue',
        'ArrayOf_tns1_RemoteProject' => 'Jira_Project'
        );

    public $_bigTypeMap = array(
        'Jira_Comment' => array(
            'author' => 'string',
            'body' => 'string',
            'created' => 'dateTime',
            'groupLevel' => 'string',
            'id' => 'string',
            'roleLevel' => 'string',
            'updateAuthor' => 'string',
            'updated' => 'dateTime'
            ),
        'Jira_TimeInfo' => array(
            'serverTime' => 'string',
            'timeZoneId' => 'string'
            ),
        'Jira_ServerInfo' => array(
            'baseUrl' => 'string',
            'buildDate' => 'dateTime',
            'buildNumber' => 'string',
            'edition' => 'string',
            'serverTime' => 'Jira_TimeInfo',
            'version' => 'string'
            ),
        'Jira_User' => array(
            'email' => 'string',
            'fullname' => 'string',
            'name' => 'string'
            ),
        'Jira_Group' => array(
            'name' => 'string',
            'users' => 'ArrayOf_tns1_RemoteUser'
            ),
        'Jira_AbstractEntity' => array('id' => 'string'),
        'Jira_AbstractNamedEntity' => array('name' => 'string'),
        'Jira_Version' => array(
            'archived' => 'boolean',
            'releaseDate' => 'dateTime',
            'released' => 'boolean',
            'sequence' => 'long'
            ),
        'Jira_CustomFieldValue' => array(
            'customfieldId' => 'string',
            'key' => 'string',
            'values' => 'ArrayOf_xsd_string'
            ),
        'Jira_Issue' => array(
            'affectsVersions' => 'ArrayOf_tns1_RemoteVersion',
            'assignee' => 'string',
            'attachmentNames' => 'ArrayOf_xsd_string',
            'components' => 'ArrayOf_tns1_RemoteComponent',
            'created' => 'dateTime',
            'customFieldValues' => 'ArrayOf_tns1_RemoteCustomFieldValue',
            'description' => 'string',
            'duedate' => 'dateTime',
            'environment' => 'string',
            'fixVersions' => 'ArrayOf_tns1_RemoteVersion',
            'key' => 'string',
            'priority' => 'string',
            'project' => 'string',
            'reporter' => 'string',
            'resolution' => 'string',
            'status' => 'string',
            'summary' => 'string',
            'type' => 'string',
            'updated' => 'dateTime',
            'votes' => 'long'
            ),
        'Jira_AbstractConstant' => array(
            'description' => 'string',
            'icon' => 'string'
            ),
        'Jira_IssueType' => array('subTask' => 'boolean'),
        'Jira_Configuration' => array(
            'allowAttachments' => 'boolean',
            'allowExternalUserManagment' => 'boolean',
            'allowIssueLinking' => 'boolean',
            'allowSubTasks' => 'boolean',
            'allowTimeTracking' => 'boolean',
            'allowUnassignedIssues' => 'boolean',
            'allowVoting' => 'boolean',
            'allowWatching' => 'boolean',
            'timeTrackingDaysPerWeek' => 'int',
            'timeTrackingHoursPerDay' => 'int'
            ),
        'Jira_Scheme' => array(
            'description' => 'string',
            'id' => 'long',
            'name' => 'string',
            'type' => 'string'
            ),
        'Jira_Permission' => array(
            'name' => 'string',
            'permission' => 'long'
            ),
        'Jira_PermissionMapping' => array(
            'permission' => 'Jira_Permission',
            'remoteEntities' => 'ArrayOf_tns1_RemoteEntity'
            ),
        'Jira_PermissionScheme' => array('permissionMappings' => 'ArrayOf_tns1_RemotePermissionMapping'),
        'Jira_Project' => array(
            'description' => 'string',
            'issueSecurityScheme' => 'Jira_Scheme',
            'key' => 'string',
            'lead' => 'string',
            'notificationScheme' => 'Jira_Scheme',
            'permissionScheme' => 'Jira_PermissionScheme',
            'projectUrl' => 'string',
            'url' => 'string'
            ),
        'Jira_Priority' => array('color' => 'string'),
        'Jira_ProjectRole' => array(
            'description' => 'string',
            'id' => 'long',
            'name' => 'string'
            ),
        'Jira_RoleActor' => array(
            'descriptor' => 'string',
            'parameter' => 'string',
            'projectRole' => 'Jira_ProjectRole',
            'type' => 'string',
            'users' => 'ArrayOf_tns1_RemoteUser'
            ),
        'Jira_RoleActors' => array(
            'projectRole' => 'Jira_ProjectRole',
            'roleActors' => 'ArrayOf_tns1_RemoteRoleActor',
            'users' => 'ArrayOf_tns1_RemoteUser'
            ),
        'Jira_ProjectRoleActors' => array('project' => 'Jira_Project'),
        'Jira_Filter' => array(
            'author' => 'string',
            'description' => 'string',
            'project' => 'string',
            'xml' => 'string'
            ),
        'Jira_FieldValue' => array(
            'id' => 'string',
            'values' => 'ArrayOf_xsd_string'
            ),
        'Jira_SecurityLevel' => array('description' => 'string'),
        'Jira_Avatar' => array(
            'base64Data' => 'string',
            'contentType' => 'string',
            'id' => 'long',
            'owner' => 'string',
            'system' => 'boolean',
            'type' => 'string'
            ),
        'Jira_Attachment' => array(
            'author' => 'string',
            'created' => 'dateTime',
            'filename' => 'string',
            'filesize' => 'long',
            'mimetype' => 'string'
            ),
        'Jira_Worklog' => array(
            'author' => 'string',
            'comment' => 'string',
            'created' => 'dateTime',
            'groupLevel' => 'string',
            'id' => 'string',
            'roleLevelId' => 'string',
            'startDate' => 'dateTime',
            'timeSpent' => 'string',
            'timeSpentInSeconds' => 'long',
            'updateAuthor' => 'string',
            'updated' => 'dateTime'
            )
        );

    /**
     * @param long $id
     * @return Jira_Comment
     */
    public function getComment($id)
    {
        try {
            $result = parent::getComment($this->getToken(),$id);
            $result = $this->_objectReturn($result,"Jira_Comment");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns information about the server JIRA is running on including build number
     * and base URL. 
     * 
     * @return Jira_ServerInfo
     */
    public function getServerInfo()
    {
        try {
            $result = parent::getServerInfo($this->getToken());
            $result = $this->_objectReturn($result,"Jira_ServerInfo");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Creates a group with the given name optionally adding the given user to it. 
     * 
     * @param string $groupName - the name of the group to create.
     * @param Jira_User $firstUser - the user to add to the group (if null, no user
     * will be added).
     * @return Jira_Group
     */
    public function createGroup($groupName, Jira_User $firstUser)
    {
        $firstUser = $this->_putObject($firstUser,"Jira_User");
        try {
            $result = parent::createGroup($this->getToken(),$groupName,$firstUser);
            $result = $this->_objectReturn($result,"Jira_Group");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Find the group with the specified name in JIRA. 
     * 
     * @param string $groupName - the name of the group to find.
     * @return Jira_Group
     */
    public function getGroup($groupName)
    {
        try {
            $result = parent::getGroup($this->getToken(),$groupName);
            $result = $this->_objectReturn($result,"Jira_Group");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * This will authenticate the user in JIRA and returned a authentication token that
     * can then be used on all other  SOAP methods. 
     * 
     * @param string $username - the JIRA user name to authenticate
     * @param string $password - the password of the JIRA user
     * @return string
     */
    public function login($username, $password)
    {
        try {
            $result = parent::login($username,$password);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns information about a user defined to JIRA. 
     * 
     * @param string $username - the user name to look up
     * @return Jira_User
     */
    public function getUser($username)
    {
        try {
            $result = parent::getUser($this->getToken(),$username);
            $result = $this->_objectReturn($result,"Jira_User");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the components for the specified project key. 
     * 
     * @param string $projectKey - the key of the requested project
     * @return Jira_Component[]
     */
    public function getComponents($projectKey)
    {
        try {
            $result = parent::getComponents($this->getToken(),$projectKey);
            $result = $this->_objectArrayReturn($result,"Jira_Component");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Creates a user in JIRA with the specified user details. 
     * 
     * @param string $username - the user name to create
     * @param string $password - the password for the new user
     * @param string $fullName - the full name of the new user
     * @param string $email - the email of the new user
     * @return Jira_User
     */
    public function createUser($username, $password, $fullName, $email)
    {
        try {
            $result = parent::createUser($this->getToken(),$username,$password,$fullName,$email);
            $result = $this->_objectReturn($result,"Jira_User");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @return Jira_Issue
     */
    public function getIssue($issueKey)
    {
        try {
            $result = parent::getIssue($this->getToken(),$issueKey);
            $result = $this->_objectReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Issue $rIssue
     * @return Jira_Issue
     */
    public function createIssue(Jira_Issue $rIssue)
    {
        $rIssue = $this->_putObject($rIssue,"Jira_Issue");
        try {
            $result = parent::createIssue($this->getToken(),$rIssue);
            $result = $this->_objectReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @return Jira_NamedObject[]
     */
    public function getAvailableActions($issueKey)
    {
        try {
            $result = parent::getAvailableActions($this->getToken(),$issueKey);
            $result = $this->_objectArrayReturn($result,"Jira_NamedObject");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the sub task issue types in JIRA. 
     * 
     * @return Jira_IssueType[]
     */
    public function getSubTaskIssueTypes()
    {
        try {
            $result = parent::getSubTaskIssueTypes($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_IssueType");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns information about the current configuration of JIRA. 
     * 
     * @return Jira_Configuration
     */
    public function getConfiguration()
    {
        try {
            $result = parent::getConfiguration($this->getToken());
            $result = $this->_objectReturn($result,"Jira_Configuration");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $key
     * @param string $name
     * @param string $description
     * @param string $url
     * @param string $lead
     * @param Jira_PermissionScheme $permissionScheme
     * @param Jira_Scheme $notificationScheme
     * @param Jira_Scheme $issueSecurityScheme
     * @return Jira_Project
     */
    public function createProject($key, $name, $description, $url, $lead, Jira_PermissionScheme $permissionScheme, Jira_Scheme $notificationScheme, Jira_Scheme $issueSecurityScheme)
    {
        $issueSecurityScheme = $this->_putObject($issueSecurityScheme,"Jira_Scheme");
        try {
            $result = parent::createProject($this->getToken(),$key,$name,$description,$url,$lead,$permissionScheme,$notificationScheme,$issueSecurityScheme);
            $result = $this->_objectReturn($result,"Jira_Project");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Project $rProject
     * @return Jira_Project
     */
    public function updateProject(Jira_Project $rProject)
    {
        $rProject = $this->_putObject($rProject,"Jira_Project");
        try {
            $result = parent::updateProject($this->getToken(),$rProject);
            $result = $this->_objectReturn($result,"Jira_Project");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns the Project with the matching key (if the user has permission to browse
     * it). 
     * 
     * @param string $projectKey - the key of the requested project
     * @return Jira_Project
     */
    public function getProjectByKey($projectKey)
    {
        try {
            $result = parent::getProjectByKey($this->getToken(),$projectKey);
            $result = $this->_objectReturn($result,"Jira_Project");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Project $project
     * @return void
     */
    public function removeAllRoleActorsByProject(Jira_Project $project)
    {
        $project = $this->_putObject($project,"Jira_Project");
        try {
            $result = parent::removeAllRoleActorsByProject($this->getToken(),$project);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the issue priorities in JIRA. 
     * 
     * @return Jira_Priority[]
     */
    public function getPriorities()
    {
        try {
            $result = parent::getPriorities($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Priority");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the issue resolutions in JIRA. 
     * 
     * @return Jira_Resolution[]
     */
    public function getResolutions()
    {
        try {
            $result = parent::getResolutions($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Resolution");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the issue types for all projects in JIRA. 
     * 
     * @return Jira_IssueType[]
     */
    public function getIssueTypes()
    {
        try {
            $result = parent::getIssueTypes($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_IssueType");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the issue statuses in JIRA. 
     * 
     * @return Jira_Status[]
     */
    public function getStatuses()
    {
        try {
            $result = parent::getStatuses($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Status");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @return Jira_ProjectRole[]
     */
    public function getProjectRoles()
    {
        try {
            $result = parent::getProjectRoles($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_ProjectRole");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param long $id
     * @return Jira_ProjectRole
     */
    public function getProjectRole($id)
    {
        try {
            $result = parent::getProjectRole($this->getToken(),$id);
            $result = $this->_objectReturn($result,"Jira_ProjectRole");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_ProjectRole $projectRole
     * @param Jira_Project $project
     * @return Jira_ProjectRoleActors
     */
    public function getProjectRoleActors(Jira_ProjectRole $projectRole, Jira_Project $project)
    {
        $project = $this->_putObject($project,"Jira_Project");
        try {
            $result = parent::getProjectRoleActors($this->getToken(),$projectRole,$project);
            $result = $this->_objectReturn($result,"Jira_ProjectRoleActors");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_ProjectRole $projectRole
     * @return Jira_RoleActors
     */
    public function getDefaultRoleActors(Jira_ProjectRole $projectRole)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::getDefaultRoleActors($this->getToken(),$projectRole);
            $result = $this->_objectReturn($result,"Jira_RoleActors");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $name
     * @param string $type
     * @return void
     */
    public function removeAllRoleActorsByNameAndType($name, $type)
    {
        try {
            $result = parent::removeAllRoleActorsByNameAndType($this->getToken(),$name,$type);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_ProjectRole $projectRole
     * @param boolean $confirm
     * @return void
     */
    public function deleteProjectRole(Jira_ProjectRole $projectRole, $confirm)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::deleteProjectRole($this->getToken(),$projectRole,$confirm);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_ProjectRole $projectRole
     * @return void
     */
    public function updateProjectRole(Jira_ProjectRole $projectRole)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::updateProjectRole($this->getToken(),$projectRole);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_ProjectRole $projectRole
     * @return Jira_ProjectRole
     */
    public function createProjectRole(Jira_ProjectRole $projectRole)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::createProjectRole($this->getToken(),$projectRole);
            $result = $this->_objectReturn($result,"Jira_ProjectRole");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $name
     * @return boolean
     */
    public function isProjectRoleNameUnique($name)
    {
        try {
            $result = parent::isProjectRoleNameUnique($this->getToken(),$name);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param ArrayOf_xsd_string $actors
     * @param Jira_ProjectRole $projectRole
     * @param Jira_Project $project
     * @param string $actorType
     * @return void
     */
    public function addActorsToProjectRole($actors, Jira_ProjectRole $projectRole, Jira_Project $project, $actorType)
    {
        $project = $this->_putObject($project,"Jira_Project");
        try {
            $result = parent::addActorsToProjectRole($this->getToken(),$actors,$projectRole,$project,$actorType);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param ArrayOf_xsd_string $actors
     * @param Jira_ProjectRole $projectRole
     * @param Jira_Project $project
     * @param string $actorType
     * @return void
     */
    public function removeActorsFromProjectRole($actors, Jira_ProjectRole $projectRole, Jira_Project $project, $actorType)
    {
        $project = $this->_putObject($project,"Jira_Project");
        try {
            $result = parent::removeActorsFromProjectRole($this->getToken(),$actors,$projectRole,$project,$actorType);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param ArrayOf_xsd_string $actors
     * @param Jira_ProjectRole $projectRole
     * @param string $type
     * @return void
     */
    public function addDefaultActorsToProjectRole($actors, Jira_ProjectRole $projectRole, $type)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::addDefaultActorsToProjectRole($this->getToken(),$actors,$projectRole,$type);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param ArrayOf_xsd_string $actors
     * @param Jira_ProjectRole $projectRole
     * @param string $actorType
     * @return void
     */
    public function removeDefaultActorsFromProjectRole($actors, Jira_ProjectRole $projectRole, $actorType)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::removeDefaultActorsFromProjectRole($this->getToken(),$actors,$projectRole,$actorType);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_ProjectRole $projectRole
     * @return Jira_Scheme[]
     */
    public function getAssociatedNotificationSchemes(Jira_ProjectRole $projectRole)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::getAssociatedNotificationSchemes($this->getToken(),$projectRole);
            $result = $this->_objectArrayReturn($result,"Jira_Scheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_ProjectRole $projectRole
     * @return Jira_Scheme[]
     */
    public function getAssociatedPermissionSchemes(Jira_ProjectRole $projectRole)
    {
        $projectRole = $this->_putObject($projectRole,"Jira_ProjectRole");
        try {
            $result = parent::getAssociatedPermissionSchemes($this->getToken(),$projectRole);
            $result = $this->_objectArrayReturn($result,"Jira_Scheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $projectKey
     * @return void
     */
    public function deleteProject($projectKey)
    {
        try {
            $result = parent::deleteProject($this->getToken(),$projectKey);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns the Project with the matching id (if the user has permission to browse
     * it). 
     * 
     * @param long $projectId - the id of the requested project
     * @return Jira_Project
     */
    public function getProjectById($projectId)
    {
        try {
            $result = parent::getProjectById($this->getToken(),$projectId);
            $result = $this->_objectReturn($result,"Jira_Project");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the versions for the specified project key. 
     * 
     * @param string $projectKey - the key of the requested project
     * @return Jira_Version[]
     */
    public function getVersions($projectKey)
    {
        try {
            $result = parent::getVersions($this->getToken(),$projectKey);
            $result = $this->_objectArrayReturn($result,"Jira_Version");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @return Jira_Field[]
     */
    public function getCustomFields()
    {
        try {
            $result = parent::getCustomFields($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Field");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @return Jira_Comment[]
     */
    public function getComments($issueKey)
    {
        try {
            $result = parent::getComments($this->getToken(),$issueKey);
            $result = $this->_objectArrayReturn($result,"Jira_Comment");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * This retreives a list of the currently logged in user's favourite fitlers. 
     * 
     * @return Jira_Filter[]
     */
    public function getFavouriteFilters()
    {
        try {
            $result = parent::getFavouriteFilters($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Filter");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $projectKey
     * @param Jira_Version $version
     * @return void
     */
    public function releaseVersion($projectKey, Jira_Version $version)
    {
        $version = $this->_putObject($version,"Jira_Version");
        try {
            $result = parent::releaseVersion($this->getToken(),$projectKey,$version);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $projectKey
     * @param string $versionName
     * @param boolean $archive
     * @return void
     */
    public function archiveVersion($projectKey, $versionName, $archive)
    {
        try {
            $result = parent::archiveVersion($this->getToken(),$projectKey,$versionName,$archive);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * This will update an issue with new values.  
     * 
     * @param string $issueKey - the issue to update.
     * @param ArrayOf_tns1_RemoteFieldValue $actionParams - the list of issue fields to
     * change
     * @return Jira_Issue
     */
    public function updateIssue($issueKey, $actionParams)
    {
        try {
            $result = parent::updateIssue($this->getToken(),$issueKey,$actionParams);
            $result = $this->_objectReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @return Jira_Field[]
     */
    public function getFieldsForEdit($issueKey)
    {
        try {
            $result = parent::getFieldsForEdit($this->getToken(),$issueKey);
            $result = $this->_objectArrayReturn($result,"Jira_Field");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the (non-sub task) issue types for the specified project
     * id. 
     * 
     * @param string $projectId - id of the project
     * @return Jira_IssueType[]
     */
    public function getIssueTypesForProject($projectId)
    {
        try {
            $result = parent::getIssueTypesForProject($this->getToken(),$projectId);
            $result = $this->_objectArrayReturn($result,"Jira_IssueType");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the sub task issue types for the specified project id. 
     * 
     * @param string $projectId - id of the project
     * @return Jira_IssueType[]
     */
    public function getSubTaskIssueTypesForProject($projectId)
    {
        try {
            $result = parent::getSubTaskIssueTypesForProject($this->getToken(),$projectId);
            $result = $this->_objectArrayReturn($result,"Jira_IssueType");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Group $group
     * @param Jira_User $ruser
     * @return void
     */
    public function addUserToGroup(Jira_Group $group, Jira_User $ruser)
    {
        $ruser = $this->_putObject($ruser,"Jira_User");
        try {
            $result = parent::addUserToGroup($this->getToken(),$group,$ruser);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Group $group
     * @param Jira_User $ruser
     * @return void
     */
    public function removeUserFromGroup(Jira_Group $group, Jira_User $ruser)
    {
        $ruser = $this->_putObject($ruser,"Jira_User");
        try {
            $result = parent::removeUserFromGroup($this->getToken(),$group,$ruser);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns the current security level for given issue 
     * 
     * @param string $issueKey - the issue key
     * @return Jira_SecurityLevel
     */
    public function getSecurityLevel($issueKey)
    {
        try {
            $result = parent::getSecurityLevel($this->getToken(),$issueKey);
            $result = $this->_objectReturn($result,"Jira_SecurityLevel");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @param Jira_Comment $remoteComment
     * @return void
     */
    public function addComment($issueKey, Jira_Comment $remoteComment)
    {
        $remoteComment = $this->_putObject($remoteComment,"Jira_Comment");
        try {
            $result = parent::addComment($this->getToken(),$issueKey,$remoteComment);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Cleans up an authentication token that was previously created with a call to 
     * 
     * @return boolean
     */
    public function logout()
    {
        try {
            $result = parent::logout($this->getToken());    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns the Project with the matching id (if the user has permission to browse
     * it) with notification, issue  security and permission schemes attached. 
     * 
     * @param long $projectId - the id of the requested project
     * @return Jira_Project
     */
    public function getProjectWithSchemesById($projectId)
    {
        try {
            $result = parent::getProjectWithSchemesById($this->getToken(),$projectId);
            $result = $this->_objectReturn($result,"Jira_Project");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all security levels for a given project. 
     * 
     * @param string $projectKey - the key for the project
     * @return Jira_SecurityLevel[]
     */
    public function getSecurityLevels($projectKey)
    {
        try {
            $result = parent::getSecurityLevels($this->getToken(),$projectKey);
            $result = $this->_objectArrayReturn($result,"Jira_SecurityLevel");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Retrieves avatars for the given project. If the includeSystemAvatars parameter
     * is true, this will include both  system (built-in) avatars as well as custom
     * (user-supplied) avatars for that project, otherwise it will include  only the
     * custom avatars. Project browse permission is required. 
     * 
     * @param string $projectKey - the key for the project.
     * @param boolean $includeSystemAvatars - if false, only custom avatars will be
     * included in the returned array.
     * @return Jira_Avatar[]
     */
    public function getProjectAvatars($projectKey, $includeSystemAvatars)
    {
        try {
            $result = parent::getProjectAvatars($this->getToken(),$projectKey,$includeSystemAvatars);
            $result = $this->_objectArrayReturn($result,"Jira_Avatar");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Sets the current avatar for the given project to that with the given id. Project
     * administration permission is  required. 
     * 
     * @param string $projectKey - the key for the project.
     * @param long $avatarId - the id of an existing avatar to use for the project or
     * null for the default avatar.
     * @return void
     */
    public function setProjectAvatar($projectKey, $avatarId)
    {
        try {
            $result = parent::setProjectAvatar($this->getToken(),$projectKey,$avatarId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Retrieves the current avatar for the given project. Project browse permission is
     * required. 
     * 
     * @param string $projectKey - the key for the project.
     * @return Jira_Avatar
     */
    public function getProjectAvatar($projectKey)
    {
        try {
            $result = parent::getProjectAvatar($this->getToken(),$projectKey);
            $result = $this->_objectReturn($result,"Jira_Avatar");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deletes the given custom Avatar from the system. System avatars cannot be
     * deleted. Project administration  permission is required. 
     * 
     * @param long $avatarId - id of the custom avatar to delete.
     * @return void
     */
    public function deleteProjectAvatar($avatarId)
    {
        try {
            $result = parent::deleteProjectAvatar($this->getToken(),$avatarId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @return Jira_Scheme[]
     */
    public function getNotificationSchemes()
    {
        try {
            $result = parent::getNotificationSchemes($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Scheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @return Jira_PermissionScheme[]
     */
    public function getPermissionSchemes()
    {
        try {
            $result = parent::getPermissionSchemes($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_PermissionScheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @return Jira_Permission[]
     */
    public function getAllPermissions()
    {
        try {
            $result = parent::getAllPermissions($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Permission");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $name
     * @param string $description
     * @return Jira_PermissionScheme
     */
    public function createPermissionScheme($name, $description)
    {
        try {
            $result = parent::createPermissionScheme($this->getToken(),$name,$description);
            $result = $this->_objectReturn($result,"Jira_PermissionScheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_PermissionScheme $permissionScheme
     * @param Jira_Permission $permission
     * @param Jira_Entity $remoteEntity
     * @return Jira_PermissionScheme
     */
    public function addPermissionTo(Jira_PermissionScheme $permissionScheme, Jira_Permission $permission, Jira_Entity $remoteEntity)
    {
        $remoteEntity = $this->_putObject($remoteEntity,"Jira_Entity");
        try {
            $result = parent::addPermissionTo($this->getToken(),$permissionScheme,$permission,$remoteEntity);
            $result = $this->_objectReturn($result,"Jira_PermissionScheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_PermissionScheme $permissionSchemeName
     * @param Jira_Permission $permission
     * @param Jira_Entity $remoteEntity
     * @return Jira_PermissionScheme
     */
    public function deletePermissionFrom(Jira_PermissionScheme $permissionSchemeName, Jira_Permission $permission, Jira_Entity $remoteEntity)
    {
        $remoteEntity = $this->_putObject($remoteEntity,"Jira_Entity");
        try {
            $result = parent::deletePermissionFrom($this->getToken(),$permissionSchemeName,$permission,$remoteEntity);
            $result = $this->_objectReturn($result,"Jira_PermissionScheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $permissionSchemeName
     * @return void
     */
    public function deletePermissionScheme($permissionSchemeName)
    {
        try {
            $result = parent::deletePermissionScheme($this->getToken(),$permissionSchemeName);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Issue $rIssue
     * @param long $securityLevelId
     * @return Jira_Issue
     */
    public function createIssueWithSecurityLevel(Jira_Issue $rIssue, $securityLevelId)
    {
        $rIssue = $this->_putObject($rIssue,"Jira_Issue");
        try {
            $result = parent::createIssueWithSecurityLevel($this->getToken(),$rIssue,$securityLevelId);
            $result = $this->_objectReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deprecated.
     * 
     * @param string $issueKey - the issue to attach to
     * @param ArrayOf_xsd_string $fileNames - an array of filenames; each element names
     * an attachment to be uploaded
     * @param ArrayOf_xsd_base64Binary $attachments - an array of byte arrays; each
     * element contains the data of the attachment to be uploaded
     * @return boolean
     */
    public function addAttachmentsToIssue($issueKey, $fileNames, $attachments)
    {
        try {
            $result = parent::addAttachmentsToIssue($this->getToken(),$issueKey,$fileNames,$attachments);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @return Jira_Attachment[]
     */
    public function getAttachmentsFromIssue($issueKey)
    {
        try {
            $result = parent::getAttachmentsFromIssue($this->getToken(),$issueKey);
            $result = $this->_objectArrayReturn($result,"Jira_Attachment");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @return void
     */
    public function deleteIssue($issueKey)
    {
        try {
            $result = parent::deleteIssue($this->getToken(),$issueKey);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Comment $remoteComment
     * @return boolean
     */
    public function hasPermissionToEditComment(Jira_Comment $remoteComment)
    {
        $remoteComment = $this->_putObject($remoteComment,"Jira_Comment");
        try {
            $result = parent::hasPermissionToEditComment($this->getToken(),$remoteComment);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Comment $remoteComment
     * @return Jira_Comment
     */
    public function editComment(Jira_Comment $remoteComment)
    {
        $remoteComment = $this->_putObject($remoteComment,"Jira_Comment");
        try {
            $result = parent::editComment($this->getToken(),$remoteComment);
            $result = $this->_objectReturn($result,"Jira_Comment");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueKey
     * @param string $actionIdString
     * @return Jira_Field[]
     */
    public function getFieldsForAction($issueKey, $actionIdString)
    {
        try {
            $result = parent::getFieldsForAction($this->getToken(),$issueKey,$actionIdString);
            $result = $this->_objectArrayReturn($result,"Jira_Field");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * This will progress an issue through a workflow. 
     * 
     * @param string $issueKey - the issue to update.
     * @param string $actionIdString - the workflow action to progress to
     * @param ArrayOf_tns1_RemoteFieldValue $actionParams - the list of issue fields to
     * change in this workflow step
     * @return Jira_Issue
     */
    public function progressWorkflowAction($issueKey, $actionIdString, $actionParams)
    {
        try {
            $result = parent::progressWorkflowAction($this->getToken(),$issueKey,$actionIdString,$actionParams);
            $result = $this->_objectReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $issueId
     * @return Jira_Issue
     */
    public function getIssueById($issueId)
    {
        try {
            $result = parent::getIssueById($this->getToken(),$issueId);
            $result = $this->_objectReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Adds a worklog to the given issue and sets the issue's remaining estimate field
     * to the given value. The issue's  time spent field will be increased by the
     * amount in the remoteWorklog.getTimeSpent().  
     * 
     * @param string $issueKey - the key of the issue.
     * @param Jira_Worklog $remoteWorklog - the worklog to add.
     * @param string $newRemainingEstimate - the new value for the issue's remaining
     * estimate as a duration string, eg 1d 2h.
     * @return Jira_Worklog
     */
    public function addWorklogWithNewRemainingEstimate($issueKey, Jira_Worklog $remoteWorklog, $newRemainingEstimate)
    {
        $remoteWorklog = $this->_putObject($remoteWorklog,"Jira_Worklog");
        try {
            $result = parent::addWorklogWithNewRemainingEstimate($this->getToken(),$issueKey,$remoteWorklog,$newRemainingEstimate);
            $result = $this->_objectReturn($result,"Jira_Worklog");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Adds a worklog to the given issue. The issue's time spent field will be
     * increased by the amount in the  remoteWorklog.getTimeSpent().  
     * 
     * @param string $issueKey - the key of the issue.
     * @param Jira_Worklog $remoteWorklog - the worklog to add.
     * @return Jira_Worklog
     */
    public function addWorklogAndAutoAdjustRemainingEstimate($issueKey, Jira_Worklog $remoteWorklog)
    {
        $remoteWorklog = $this->_putObject($remoteWorklog,"Jira_Worklog");
        try {
            $result = parent::addWorklogAndAutoAdjustRemainingEstimate($this->getToken(),$issueKey,$remoteWorklog);
            $result = $this->_objectReturn($result,"Jira_Worklog");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Adds a worklog to the given issue but leaves the issue's remaining estimate
     * field unchanged. The issue's time  spent field will be increased by the amount
     * in the remoteWorklog.getTimeSpent().  
     * 
     * @param string $issueKey - the key of the issue.
     * @param Jira_Worklog $remoteWorklog - the worklog to add.
     * @return Jira_Worklog
     */
    public function addWorklogAndRetainRemainingEstimate($issueKey, Jira_Worklog $remoteWorklog)
    {
        $remoteWorklog = $this->_putObject($remoteWorklog,"Jira_Worklog");
        try {
            $result = parent::addWorklogAndRetainRemainingEstimate($this->getToken(),$issueKey,$remoteWorklog);
            $result = $this->_objectReturn($result,"Jira_Worklog");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deletes the worklog with the given id and sets the remaining estimate field on
     * the isssue to the given value. The  time spent field of the issue is reduced by
     * the time spent amount on the worklog being deleted. 
     * 
     * @param string $worklogId - the id of the worklog to delete.
     * @param string $newRemainingEstimate - the new value for the issue's remaining
     * estimate as a duration string, eg 1d 2h.
     * @return void
     */
    public function deleteWorklogWithNewRemainingEstimate($worklogId, $newRemainingEstimate)
    {
        try {
            $result = parent::deleteWorklogWithNewRemainingEstimate($this->getToken(),$worklogId,$newRemainingEstimate);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deletes the worklog with the given id and updates the remaining estimate field
     * on the isssue by increasing it by  the time spent amount on the worklog being
     * deleted. The time spent field of the issue is reduced by the time  spent amount
     * on the worklog being deleted. 
     * 
     * @param string $worklogId - the id of the worklog to delete.
     * @return void
     */
    public function deleteWorklogAndAutoAdjustRemainingEstimate($worklogId)
    {
        try {
            $result = parent::deleteWorklogAndAutoAdjustRemainingEstimate($this->getToken(),$worklogId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deletes the worklog with the given id but leaves the remaining estimate field on
     * the isssue unchanged. The time  spent field of the issue is reduced by the time
     * spent amount on the worklog being deleted. 
     * 
     * @param string $worklogId - the id of the worklog to delete.
     * @return void
     */
    public function deleteWorklogAndRetainRemainingEstimate($worklogId)
    {
        try {
            $result = parent::deleteWorklogAndRetainRemainingEstimate($this->getToken(),$worklogId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Modifies the worklog with the id of the given worklog, updating its fields to
     * match the given worklog and sets  the remaining estimate field on the relevant
     * issue to the given value. The time spent field of the issue is  changed by
     * subtracting the previous value of the worklog's time spent amount and adding the
     * new value in the  given worklog.  
     * 
     * @param Jira_Worklog $remoteWorklog - the worklog to update.
     * @param string $newRemainingEstimate - the new value for the issue's remaining
     * estimate as a duration string, eg 1d 2h.
     * @return void
     */
    public function updateWorklogWithNewRemainingEstimate(Jira_Worklog $remoteWorklog, $newRemainingEstimate)
    {
        $remoteWorklog = $this->_putObject($remoteWorklog,"Jira_Worklog");
        try {
            $result = parent::updateWorklogWithNewRemainingEstimate($this->getToken(),$remoteWorklog,$newRemainingEstimate);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Modifies the worklog with the id of the given worklog, updating its fields to
     * match the given worklog and changes  the remaining estimate field on the
     * relevant issue to the value obtained by adding the previous time spent amount 
     * of the worklog and subtracting the new time spent amount. The time spent field
     * of the issue is changed by  subtracting the previous value of the worklog's time
     * spent amount and adding the new value in the given worklog.  
     * 
     * @param Jira_Worklog $remoteWorklog - the worklog to update.
     * @return void
     */
    public function updateWorklogAndAutoAdjustRemainingEstimate(Jira_Worklog $remoteWorklog)
    {
        $remoteWorklog = $this->_putObject($remoteWorklog,"Jira_Worklog");
        try {
            $result = parent::updateWorklogAndAutoAdjustRemainingEstimate($this->getToken(),$remoteWorklog);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Modifies the worklog with the id of the given worklog, updating its fields to
     * match the given worklog but leaves  the remaining estimate field on the relevant
     * issue unchanged. The time spent field of the issue is changed by  subtracting
     * the previous value of the worklog's time spent amount and adding the new value
     * in the given worklog.  
     * 
     * @param Jira_Worklog $remoteWorklog - the worklog to update.
     * @return void
     */
    public function updateWorklogAndRetainRemainingEstimate(Jira_Worklog $remoteWorklog)
    {
        $remoteWorklog = $this->_putObject($remoteWorklog,"Jira_Worklog");
        try {
            $result = parent::updateWorklogAndRetainRemainingEstimate($this->getToken(),$remoteWorklog);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns all worklogs for the given issue. 
     * 
     * @param string $issueKey - the key of the issue.
     * @return Jira_Worklog[]
     */
    public function getWorklogs($issueKey)
    {
        try {
            $result = parent::getWorklogs($this->getToken(),$issueKey);
            $result = $this->_objectArrayReturn($result,"Jira_Worklog");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Determines if the user has the permission to add worklogs to the specified
     * issue, that timetracking is enabled in  JIRA and that the specified issue is in
     * an editable workflow state. 
     * 
     * @param string $issueKey - the key of the issue.
     * @return boolean
     */
    public function hasPermissionToCreateWorklog($issueKey)
    {
        try {
            $result = parent::hasPermissionToCreateWorklog($this->getToken(),$issueKey);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Determine whether the current user has the permission to delete the supplied
     * worklog, that timetracking is  enabled in JIRA and that the associated issue is
     * in an editable workflow state.  
     * 
     * @param string $worklogId - the id of the worklog wishes to delete.
     * @return boolean
     */
    public function hasPermissionToDeleteWorklog($worklogId)
    {
        try {
            $result = parent::hasPermissionToDeleteWorklog($this->getToken(),$worklogId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Determine whether the current user has the permission to update the supplied
     * worklog, that timetracking is  enabled in JIRA and that the associated issue is
     * in an editable workflow state.  
     * 
     * @param string $worklogId - the ide of the worklog wishes to update.
     * @return boolean
     */
    public function hasPermissionToUpdateWorklog($worklogId)
    {
        try {
            $result = parent::hasPermissionToUpdateWorklog($this->getToken(),$worklogId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Given an issue key, this method returns the resolution date for this issue.  If
     * the issue hasn't been resolved  yet, this method will return null.  
     * 
     * @param string $issueKey - the key of the issue
     * @return dateTime
     */
    public function getResolutionDateByKey($issueKey)
    {
        try {
            $result = parent::getResolutionDateByKey($this->getToken(),$issueKey);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Given an issue id, this method returns the resolution date for this issue.  If
     * the issue hasn't been resolved  yet, this method will return null.  
     * 
     * @param long $issueId - the id of the issue
     * @return dateTime
     */
    public function getResolutionDateById($issueId)
    {
        try {
            $result = parent::getResolutionDateById($this->getToken(),$issueId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $filterId
     * @return long
     */
    public function getIssueCountForFilter($filterId)
    {
        try {
            $result = parent::getIssueCountForFilter($this->getToken(),$filterId);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deprecated.
     * 
     * @param string $searchTerms - search terms
     * @return Jira_Issue[]
     */
    public function getIssuesFromTextSearch($searchTerms)
    {
        try {
            $result = parent::getIssuesFromTextSearch($this->getToken(),$searchTerms);
            $result = $this->_objectArrayReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns issues containing searchTerms that are within the specified projects.  
     * 
     * @param ArrayOf_xsd_string $projectKeys
     * @param string $searchTerms - search terms
     * @param int $maxNumResults - the maximum number of results that this method will
     * return.
     * @return Jira_Issue[]
     */
    public function getIssuesFromTextSearchWithProject($projectKeys, $searchTerms, $maxNumResults)
    {
        try {
            $result = parent::getIssuesFromTextSearchWithProject($this->getToken(),$projectKeys,$searchTerms,$maxNumResults);
            $result = $this->_objectArrayReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Execute a specified JQL query and return the resulting issues.  
     * 
     * @param string $jqlSearch - JQL query string to execute
     * @param int $maxNumResults - the maximum number of results that this method will
     * return
     * @return Jira_Issue[]
     */
    public function getIssuesFromJqlSearch($jqlSearch, $maxNumResults)
    {
        try {
            $result = parent::getIssuesFromJqlSearch($this->getToken(),$jqlSearch,$maxNumResults);
            $result = $this->_objectArrayReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deletes a user in JIRA with the specified username. 
     * 
     * @param string $username - the user name to delete
     * @return void
     */
    public function deleteUser($username)
    {
        try {
            $result = parent::deleteUser($this->getToken(),$username);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Group $group
     * @return Jira_Group
     */
    public function updateGroup(Jira_Group $group)
    {
        $group = $this->_putObject($group,"Jira_Group");
        try {
            $result = parent::updateGroup($this->getToken(),$group);
            $result = $this->_objectReturn($result,"Jira_Group");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $groupName
     * @param string $swapGroupName
     * @return void
     */
    public function deleteGroup($groupName, $swapGroupName)
    {
        try {
            $result = parent::deleteGroup($this->getToken(),$groupName,$swapGroupName);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @return void
     */
    public function refreshCustomFields()
    {
        try {
            $result = parent::refreshCustomFields($this->getToken());    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deprecated.
     * 
     * @return Jira_Filter[]
     */
    public function getSavedFilters()
    {
        try {
            $result = parent::getSavedFilters($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Filter");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * An alternative mechanism for adding attachments to an issue. This method accepts
     * the data of the attachments as  Base64 encoded strings instead of byte arrays.
     * This is to combat the XML message bloat created by Axis when  SOAP-ifying byte
     * arrays.  
     * 
     * @param string $issueKey - the issue to attach to
     * @param ArrayOf_xsd_string $fileNames - an array of filenames; each element names
     * an attachment to be uploaded
     * @param ArrayOf_xsd_string $base64EncodedAttachmentData - an array of Base 64
     * encoded Strings; each element contains the data of the
     *                                     attachment to be uploaded
     * @return boolean
     */
    public function addBase64EncodedAttachmentsToIssue($issueKey, $fileNames, $base64EncodedAttachmentData)
    {
        try {
            $result = parent::addBase64EncodedAttachmentsToIssue($this->getToken(),$issueKey,$fileNames,$base64EncodedAttachmentData);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param Jira_Project $rproject
     * @return Jira_Project
     */
    public function createProjectFromObject(Jira_Project $rproject)
    {
        $rproject = $this->_putObject($rproject,"Jira_Project");
        try {
            $result = parent::createProjectFromObject($this->getToken(),$rproject);
            $result = $this->_objectReturn($result,"Jira_Project");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @return Jira_Scheme[]
     */
    public function getSecuritySchemes()
    {
        try {
            $result = parent::getSecuritySchemes($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Scheme");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * @param string $projectKey
     * @param Jira_Version $remoteVersion
     * @return Jira_Version
     */
    public function addVersion($projectKey, Jira_Version $remoteVersion)
    {
        $remoteVersion = $this->_putObject($remoteVersion,"Jira_Version");
        try {
            $result = parent::addVersion($this->getToken(),$projectKey,$remoteVersion);
            $result = $this->_objectReturn($result,"Jira_Version");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Deprecated.
     * 
     * @param string $filterId - identifies the saved filter to use for the search.
     * @return Jira_Issue[]
     */
    public function getIssuesFromFilter($filterId)
    {
        try {
            $result = parent::getIssuesFromFilter($this->getToken(),$filterId);
            $result = $this->_objectArrayReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns issues that match the saved filter specified by the filterId.  
     * 
     * @param string $filterId - identifies the saved filter to use for the search.
     * @param int $offSet - the place in the result set to use as the first result
     * returned
     * @param int $maxNumResults - the maximum number of results that this method will
     * return.
     * @return Jira_Issue[]
     */
    public function getIssuesFromFilterWithLimit($filterId, $offSet, $maxNumResults)
    {
        try {
            $result = parent::getIssuesFromFilterWithLimit($this->getToken(),$filterId,$offSet,$maxNumResults);
            $result = $this->_objectArrayReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns issues containing searchTerms.  
     * 
     * @param string $searchTerms - search terms
     * @param int $offSet - the place in the result set to use as the first result
     * returned
     * @param int $maxNumResults - the maximum number of results that this method will
     * return.
     * @return Jira_Issue[]
     */
    public function getIssuesFromTextSearchWithLimit($searchTerms, $offSet, $maxNumResults)
    {
        try {
            $result = parent::getIssuesFromTextSearchWithLimit($this->getToken(),$searchTerms,$offSet,$maxNumResults);
            $result = $this->_objectArrayReturn($result,"Jira_Issue");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Returns an array of all the Projects defined in JIRA. 
     * 
     * @return Jira_Project[]
     */
    public function getProjectsNoSchemes()
    {
        try {
            $result = parent::getProjectsNoSchemes($this->getToken());
            $result = $this->_objectArrayReturn($result,"Jira_Project");    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }

    /**
     * Creates a new custom avatar for the given project and sets it to be current for
     * the project. The image data must  be provided as base64 encoded data and should
     * be 48 pixels square. If the image is larger, the top left 48 pixels  are taken,
     * if it is smaller it is upscaled to 48 pixels. The small version of the avatar
     * image (16 pixels) is  generated automatically. Project administration permission
     * is required. 
     * 
     * @param string $projectKey - the key for the project.
     * @param string $contentType - the MIME type of the image provided, e.g.
     * image/gif, image/jpeg, image/png.
     * @param string $base64ImageData - a base 64 encoded image, 48 pixels square.
     * @return void
     */
    public function setNewProjectAvatar($projectKey, $contentType, $base64ImageData)
    {
        try {
            $result = parent::setNewProjectAvatar($this->getToken(),$projectKey,$contentType,$base64ImageData);    return $result;
              } catch (Exception $e) {
                echo "Caught exception: ",  print_r($e->getMessage(),true); }
    }


}

